/******************************************************************************
 * Copyright 2024 zhangcong. All Rights Reserved.
 *****************************************************************************/

#pragma once

#include<stdio.h>

#define COMMON_LOG_LEVEL_DEBUG 0
#define COMMON_LOG_LEVEL_INFO 1
#define COMMON_LOG_LEVEL_WARN 2
#define COMMON_LOG_LEVEL_ERROR 3
#define COMMON_LOG_LEVEL_FATAL 4

extern int g_common_log_level;

/**
 * @brief
 *
 * @param
 */
void Common_Log_Set_Level(int level);

/**
 * @brief 获取当前日志等级
 *
 * @return
 */
int Common_Log_Get_Level(void);


/**
 * @brief 日志打印函数，默认打印到标准输出
 *
 * @param file 源文件名
 * @param func 函数名
 * @param line 行号
 * @param level 日志等级
 */
void Common_Log_writter(const char *file, const char *func, const int line, const int level, const char *fmt, ...);

#define Common_Log_d(args...) Common_Log_writter(__FILE__, __FUNCTION__, __LINE__, COMMON_LOG_LEVEL_DEBUG, args)
#define Common_Log_i(args...) Common_Log_writter(__FILE__, __FUNCTION__, __LINE__, COMMON_LOG_LEVEL_INFO, args)
#define Common_Log_w(args...) Common_Log_writter(__FILE__, __FUNCTION__, __LINE__, COMMON_LOG_LEVEL_WARN, args)
#define Common_Log_e(args...) Common_Log_writter(__FILE__, __FUNCTION__, __LINE__, COMMON_LOG_LEVEL_ERROR, args)
#define Common_Log_f(args...) Common_Log_writter(__FILE__, __FUNCTION__, __LINE__, COMMON_LOG_LEVEL_FATAL, args)
